package com.ghp.admin.service;


import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ghp.common.model.dto.DeleteIdDTO;
import com.ghp.common.model.dto.QueryIdDTO;
import com.ghp.common.model.dto.UpdateIdDTO;
import com.ghp.common.model.dto.interfaceinfo.InterfaceInfoAddDTO;
import com.ghp.common.model.dto.interfaceinfo.InterfaceInfoInvokeDTO;
import com.ghp.common.model.dto.interfaceinfo.InterfaceInfoQueryDTO;
import com.ghp.common.model.dto.interfaceinfo.InterfaceInfoUpdateDTO;
import com.ghp.common.model.entity.InterfaceInfo;
import com.ghp.common.model.vo.InterfaceInfoVO;
import com.ghp.common.utils.response.ResponseResult;

/**
* @author ghp
* @description 针对表【tb_interface_info(接口信息表)】的数据库操作Service
* @createDate 
*/
public interface InterfaceInfoService extends IService<InterfaceInfo> {

    /**
     * 新增接口
     * @param interfaceInfoAddDTO
     * @return
     */
    ResponseResult addInterfaceInfo(InterfaceInfoAddDTO interfaceInfoAddDTO);

    /**
     * 根据id删除接口
     * @param deleteIdDTO
     * @return
     */
    ResponseResult<Boolean> deleteInterfaceInfo(DeleteIdDTO deleteIdDTO);

    /**
     * 更新接口
     * @param interfaceInfoUpdateDTO
     * @return
     */
    ResponseResult<Boolean> updateInterfaceInfo(InterfaceInfoUpdateDTO interfaceInfoUpdateDTO);

    /**
     * 查询脱敏后的接口信息
     * @param queryIdDTO
     * @return
     */
    ResponseResult<InterfaceInfoVO> getInterfaceInfoVOById(QueryIdDTO queryIdDTO);

    /**
     * 分页查询脱敏后的接口信息
     * @param interfaceInfoQueryDTO
     * @return
     */
    ResponseResult<Page<InterfaceInfoVO>> listInterfaceInfoVOByPage(InterfaceInfoQueryDTO interfaceInfoQueryDTO);

    /**
     * 分页查询自身脱敏后的接口信息
     * @param interfaceInfoQueryDTO
     * @return
     */
    ResponseResult<Page<InterfaceInfoVO>> listInterfaceInfoVOByUserIdPage(InterfaceInfoQueryDTO interfaceInfoQueryDTO);

    /**
     * 上线接口
     * @param interfaceInfoInvokeDTO
     * @return
     */
    ResponseResult<Boolean> onlineInterfaceInfo(InterfaceInfoInvokeDTO interfaceInfoInvokeDTO);

    /**
     * 下线接口
     * @param updateIdDTO
     * @return
     */
    ResponseResult<Boolean> offlineInterfaceInfo(UpdateIdDTO updateIdDTO);

    /**
     * 开通接口
     * @param updateIdDTO
     * @return
     */
    ResponseResult buyInterfaceInfo(UpdateIdDTO updateIdDTO);

    /**
     * 调用接口
     * @param interfaceInfoInvokeDTO
     * @return
     */
    ResponseResult<String> invokeInterfaceInfo(InterfaceInfoInvokeDTO interfaceInfoInvokeDTO);
}
